package ejemplosVideo;

import mundo.ManejadorCordenadas;
import processing.core.PApplet;
import processing.video.Capture;

/**
 * Brightness Tracking 
 * by Golan Levin. 
 * 
 * Tracks the brightest pixel in a live video signal. 
 */

public class BrightnessTracking extends PApplet {

	private static final long serialVersionUID = 1L;

	Capture video;
	ManejadorCordenadas mCordenadas= new ManejadorCordenadas();

	public void setup() {
		size(640, 480); // Change size to 320 x 240 if too slow at 640 x 480
		// Uses the default video input, see the reference if this causes an error
		video = new Capture(this, width, height, 30);
		noStroke();
		smooth();
	}

	public void draw() {
		if (video.available()) {
			video.read();
			image(video, 0, 0, width, height); // Draw the webcam video onto the screen
			int brightestX = 0; // X-coordinate of the brightest video pixel
			int brightestY = 0; // Y-coordinate of the brightest video pixel
			float brightestValue = 0; // Brightness of the brightest video pixel
			// Search for the brightest pixel: For each row of pixels in the video image and
			// for each pixel in the yth row, compute each pixel's index in the video
			video.loadPixels();
			int index = 0;
			for (int y = 0; y < video.height; y++) {
				for (int x = 0; x < video.width; x++) {
					// Get the color stored in the pixel
					int pixelValue = video.pixels[index];
					// Determine the brightness of the pixel
					float pixelBrightness = brightness(pixelValue);
					// If that value is brighter than any previous, then store the
					// brightness of that pixel, as well as its (x,y) location
					if (pixelBrightness > brightestValue) {
						brightestValue = pixelBrightness;
						brightestY = y;
						brightestX = x;
					}
					index++;
				}
			}
			// Draw a large, yellow circle at the brightest pixel
			fill(255, 204, 0, 128);
			ellipse(brightestX, brightestY, 200, 200);
			mCordenadas.escribirCordenadas(brightestX, brightestY);
		}
	}
}
